package net.easyunion.dataservice.common.tool;

import java.beans.PropertyVetoException;

import org.springframework.jdbc.core.JdbcTemplate;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import net.easyunion.dataservice.vo.JdbcTemplateVo;

/**
 * jdbc 工具类
 * @author lipenghui
 *
 * @version 创建时间：2013年11月12日  下午6:05:37
 */
public class JdbcTemplateUtil {

	/**
	 * 根据参数获取jdbcTemplate实例,并且放入缓存中
	 * @param vo
	 * @return
	 */
	public static void putJdbcTemplateToCache(JdbcTemplateVo vo) throws PropertyVetoException{
		JdbcTemplate jt = new JdbcTemplate();
		ComboPooledDataSource ds = new ComboPooledDataSource();
		//数据源基本配置
		ds.setJdbcUrl(vo.getJdbcUrl());
		ds.setDriverClass(vo.getJdbcClassName());
		ds.setPassword(vo.getPassword());
		ds.setUser(vo.getUsername());
		
		//c3p0
		ds.setMaxPoolSize(vo.getMaxPoolSize());
		ds.setMinPoolSize(vo.getMinPoolSize());
		ds.setAutoCommitOnClose(vo.isAutoCommitOnClose());
		ds.setCheckoutTimeout(vo.getCheckoutTimeout());
		ds.setInitialPoolSize(vo.getMinPoolSize());
		ds.setMaxIdleTime(vo.getMaxIdleTime());
		ds.setAcquireIncrement(vo.getAcquireIncrement());
		ds.setMaxIdleTimeExcessConnections(vo.getMaxIdleTimeExcessConnections());
		ds.setMaxStatements(0);
		ds.setMaxStatementsPerConnection(0);
		jt.setDataSource(ds);
		ApplicationConfig.JDBC_LRU.put(vo.getDsId()+"", jt);		
	}
}
